iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
Mobile Development

從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始系列 第 10

從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始 Day10

  • 分享至 

  • xImage
  •  

Day10 NavigationSplitView

與NavigationView類似,NavigationSplitView也是用來製作導覽換頁的元件,它可以自動產生一個到第二頁的動畫轉場。

由於SwiftUI跨平台的關係,如果需要同時支援iOS、iPadOS與VisionOS的話,會建議使用NavigationSplitView。

加入一個NavigationView,例如:

NavigationSplitView {
    Text("Hello, Navigation!")
} detail: {
    Text("NavigationSplitView detail")
}

NavigationSplitView可以在iPhone與iPad產生不同的版面,但都是同屬於NavigationView。

而這個NavigationView還無法產生連結,將要產生連結的內容,放入到NavigationLink內:

NavigationSplitView {
    NavigationLink {
        Text("Page2")
                
    } label: {
        Text("Hello, Navigation!")
    }
    .navigationTitle("Title")
} detail: {
    Text("NavigationSplitView detail")
}

加入屬性navigationTitle,可以設定NavigationView的header內容。

顯示如圖:

https://ithelp.ithome.com.tw/upload/images/20240810/20162607k7tybT78Er.png

第二頁的內容可以另外製作一個View,然後取代原本的Text:

struct SwiftUIView10: View {
    var body: some View {
        NavigationSplitView {
            NavigationLink {
                Page2()
                
            } label: {
                Text("Hello, Navigation!")
            }
            .navigationTitle("Title")
        } detail: {
            Text("NavigationSplitView detail")
        }
    }
}

struct Page2: View {
    var body: some View {
        Text("Page2")
    }
}

所以按下中間的按鈕,就可以跳轉到第二頁,顯示如圖:

https://ithelp.ithome.com.tw/upload/images/20240810/20162607WAIVRznTLG.png

最後,如果要將值傳入給Page2,需要在Page2宣告一個變數,在呼叫時,直接帶入變數內容:

struct SwiftUIView10: View {
    var body: some View {
        NavigationSplitView {
            NavigationLink {
                Page2(title: "Hello Jake")
                
            } label: {
                Text("Hello, Navigation!")
            }
            .navigationTitle("Title")
        } detail: {
            Text("NavigationSplitView detail")
        }
    }
}

struct Page2: View {
    
    var title: String
    
    var body: some View {
        Text("Page2: \(title)")
    }
}

顯示如圖:

https://ithelp.ithome.com.tw/upload/images/20240810/20162607xLJq71yBwT.png

從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始 Day10 [完]


上一篇
從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始 Day9
下一篇
從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始 Day11
系列文
從 SwiftUI 到 Apple Vision Pro - SwiftUI 從零開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言